// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010  Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

#ifndef RY_OUTPOST_BUILDING_H
#define RY_OUTPOST_BUILDING_H

#include "entity_sheet.h"
#include "client_sheets.h"

/**
 * Outpost building definition for client side management (buy building upgrades ...)
 *
 * \author Matthieu 'Trap' Besson
 * \author Nevrax France
 * \date October 2005
 */
class COutpostBuildingSheet : public CEntitySheet
{
public:

	enum TOBType
	{
		OB_Empty,
		OB_TownHall,
		OB_Driller
	};
	static TOBType fromString( const std::string & str );
	static std::string toString( TOBType type );

	/// The type of the building
	TOBType OBType;

	/// cost of the building or upgrade in time (seconds)
	uint32 CostTime;

	/// cost in dapper
	uint32 CostDapper;

	/// Raw Material Level that has the highest extraction rate for the driller
	uint32 MPLevelOfHighestExtractRate;

	/// Mps generated by the driller
	std::vector<NLMISC::CSheetId> Mps;

	/// To display a building in lists (like in a CItemSheet)

	/// icon file name for race type
	NLMISC::TSStringId					IdIconBack;
	/// icon file name for main icon type
	NLMISC::TSStringId					IdIconMain;
	/// icon file name for overlay
	NLMISC::TSStringId					IdIconOver;
	/// icon Special Text (raw materials)
	NLMISC::TSStringId					IdIconText;

public:
	// ctor
	COutpostBuildingSheet();

	/// From CEntitySheet
	virtual void build(const NLGEORGES::UFormElm &item);

	/// From CEntitySheet  : serialize sheet into binary data file.
	virtual void serial(class NLMISC::IStream &f) throw(NLMISC::EStream);

	std::string getIconBack() const { return ClientSheetsStrings.get(IdIconBack); }
	std::string getIconMain() const { return ClientSheetsStrings.get(IdIconMain); }
	std::string getIconOver() const { return ClientSheetsStrings.get(IdIconOver); }
	std::string getIconText() const { return ClientSheetsStrings.get(IdIconText); }

};

#endif
